package com.boarsoft.boar.service;

import java.io.IOException;

import com.boarsoft.bean.ReplyInfo;
import com.boarsoft.boar.entity.FileVersion;

/**
 * 由配置中心提供的对外服务
 * 
 * @author Mac_J
 *
 */
public interface FileService {
	/**
	 * 
	 * @param by
	 *            修改人或节点地址
	 * @param fileId
	 * @param env
	 * @param group
	 *            分组
	 * @param bytes
	 * @return
	 */
	ReplyInfo<Object> commit(String by, String fileId, String env, String group, byte[] bytes);

	/**
	 * 
	 * @param ip
	 *            发送配置文件请求的节点地址
	 * @param port
	 * @param code
	 *            请求的配置文件编号
	 * @return 当前版本文件的路径
	 */
	String find(String ip, int port, String code);

	/**
	 * @param ip
	 *            发送配置文件请求的节点地址
	 * @param port
	 * @param code
	 *            请求的配置文件编号
	 * @return
	 * @throws IOException
	 */
	byte[] load(String ip, int port, String code) throws IOException;

	/**
	 * 上传配置文件到服务器，生成的版本
	 * 
	 * @param ip
	 * @param port
	 * @param code
	 * @param bytes
	 * @return
	 * @throws IOException
	 */
	ReplyInfo<Object> commit(String ip, int port, String code, byte[] bytes) throws IOException;

	/**
	 * 
	 * @param o
	 * @return
	 */
	String getFilePath(FileVersion o);

	/**
	 * 
	 * @param fileId
	 * @param env
	 * @param group
	 * @return
	 * @throws IOException
	 */
	byte[] load(String fileId, String env, String group) throws IOException;

	/**
	 * 
	 * @param o
	 * @return
	 * @throws IOException
	 */
	byte[] load(FileVersion o) throws IOException;

	void delete(String fileId, String env, String group);
}